home *** CD-ROM | disk | FTP | other *** search
/ Aminet 6 / Aminet 6 - June 1995.iso / Aminet / dev / basic / ACE_Prgs.lha / speech / sayplan.b next >
Encoding:
Text File  |  1994-12-04  |  6.5 KB  |  350 lines

  1. '...Speech Planner (expects Topaz 8 as default system font).
  2.  
  3. '...Originally written in AmigaBASIC by David Benn (November 1990).
  4. '...Converted to ACE BASIC by David Benn, December 4th 1994.
  5.  
  6. SCREEN 2,640,200,3,2
  7. WINDOW 2,,(0,0)-(640,200),16,2
  8.  
  9. PALETTE 0,0,0,0          '...black
  10. PALETTE 1,1,1,1          '...white
  11. PALETTE 2,1,.75,.25      '...red
  12. PALETTE 3,.75,1,.25      '...green
  13. PALETTE 4,.25,.5,1       '...blue
  14. PALETTE 5,0,0,0          '...cursor colour
  15.  
  16. LOCATE 13,31
  17. COLOR 3,0
  18. PRINT "Please Wait..."
  19.  
  20. DIM vowel$(12),diphthong$(6),consonant1$(12),consonant2$(13)
  21. DIM special$(11),punct$(7),digit$(9)
  22. DIM phon$(80),phmenu(80)
  23. DIM v%(8),voice$(9)
  24. DIM loval(9),hival(9)
  25.  
  26. FOR v=0 TO 12
  27.   READ vowel$(v)
  28.   MENU 1,v,1,vowel$(v)
  29. NEXT
  30.  
  31. FOR d=0 TO 6
  32.   READ diphthong$(d)
  33.   MENU 2,d,1,diphthong$(d)
  34. NEXT
  35.  
  36. FOR c=0 TO 12
  37.   READ consonant1$(c)
  38.   MENU 3,c,1,consonant1$(c)
  39. NEXT
  40.  
  41. FOR c=0 TO 13
  42.   READ consonant2$(c)
  43.   MENU 4,c,1,consonant2$(c)
  44. NEXT
  45.  
  46. FOR s=0 TO 11
  47.   READ special$(s)
  48.   MENU 5,s,1,special$(s)
  49. NEXT
  50.  
  51. FOR p=0 TO 7 
  52.   READ punct$(p)
  53.   MENU 6,p,1,punct$(p)
  54. NEXT
  55.  
  56. FOR d=0 TO 9
  57.   READ digit$(d)
  58.   MENU 7,d,1,digit$(d)
  59. NEXT
  60.  
  61. FOR v=0 TO 9
  62.   READ voice$(v)
  63.   MENU 8,v,1,voice$(v)
  64. NEXT
  65.   
  66. FOR a=0 TO 6
  67.   READ action$
  68.   MENU 9,a,1,action$
  69. NEXT
  70.  
  71. '...vowels
  72. DATA " V ",IY,EH,AA,AO,ER,AX,IH,AE,AH,UH,OH,IX
  73. '...diphthongs
  74. DATA " DP",EY,OY,OW,AY,AW,UW
  75. '...consonants
  76. DATA " C1 ",R,W,M,NX,S,F,Z,V,CH,"/H",B,D
  77. DATA " C2 ",K,L,Y,N,SH,TH,ZH,DH,J,"/C",P,T,G
  78. '...special symbols
  79. DATA " S ",DX,Q,QX,RX,LX,UL,IL,UM,IM,UN,IN
  80. '...punctuation
  81. DATA " P ",".","?","-",",","(",")",space
  82. '...digits
  83. DATA " D ","1","2","3","4","5","6","7","8","9"
  84. '...speech characteristics
  85. DATA Voice,pitch,inflection,rate,gender,tuning,volume,channel,mode,control
  86. '...actions
  87. DATA Action,"Say",Translate,"Clear","Delete",Help,"Exit"
  88.  
  89. FOR i=0 TO 8
  90.   READ v%(i)
  91. NEXT
  92.   
  93. '...default speech characteristics
  94. DATA 95,0,140,0,23000,64,10,0,0
  95.  
  96. FOR j=1 TO 9
  97.   READ loval(j),hival(j)
  98. NEXT
  99.  
  100. '...lo & hi values for each speech characteristic
  101. DATA 65,320
  102. DATA 0,1
  103. DATA 40,400
  104. DATA 0,1
  105. DATA 5000,28000
  106. DATA 0,64
  107. DATA 0,11
  108. DATA 0,1
  109. DATA 0,2                   
  110.  
  111. s$=""    '...speech string
  112. pc=0    '...phoneme count
  113. lastp=0 '...zero last phoneme  (initially out of range)
  114. HavingFun=-1
  115.  
  116. GOSUB show
  117. SAY "OHKEY?",v%
  118.  
  119. ON MENU GOSUB checkmenu  
  120. MENU ON                        '...activate event trapping
  121.  
  122. WHILE HavingFun
  123.   hue1=RND
  124.   hue2=RND
  125.   hue3=RND
  126.   PALETTE 5,hue1,hue2,hue3 
  127.   time0=TIMER
  128.   WHILE TIMER < time0+.1
  129.   WEND
  130. WEND
  131.  
  132. checkmenu:
  133.   x=MENU(0)
  134.   y=MENU(1)
  135.  
  136.   IF LEN(s$)>=80 AND x<8 THEN RETURN    '...speech buffer full!
  137.   
  138.   IF x<>1 THEN x2
  139.   IF y>0 THEN 
  140.     s$=s$+vowel$(y)
  141.     pc=pc+1
  142.     phon$(pc)=vowel$(y)
  143.     phmenu(pc)=x
  144.   END IF  
  145.   GOTO display      
  146.   
  147.   x2:
  148.   IF x<>2 THEN x3
  149.   IF y>0 THEN 
  150.     s$=s$+diphthong$(y)
  151.     pc=pc+1
  152.     phon$(pc)=diphthong$(y)
  153.     phmenu(pc)=x
  154.   END IF  
  155.   GOTO display      
  156.   
  157.   x3:
  158.   IF x<>3 THEN x4
  159.   IF y>0 THEN
  160.     s$=s$+consonant1$(y)
  161.     pc=pc+1
  162.     phon$(pc)=consonant1$(y)
  163.     phmenu(pc)=x
  164.   END IF  
  165.   GOTO display      
  166.   
  167.   x4:
  168.   IF x<>4 THEN x5
  169.   IF y>0 THEN 
  170.     s$=s$+consonant2$(y)
  171.     pc=pc+1
  172.     phon$(pc)=consonant2$(y)
  173.     phmenu(pc)=x
  174.   END IF  
  175.   GOTO display      
  176.   
  177.   x5:
  178.   IF x<>5 THEN x6
  179.   IF y>0 THEN
  180.     s$=s$+special$(y)
  181.     pc=pc+1
  182.     phon$(pc)=special$(y)
  183.     phmenu(pc)=x
  184.   END IF  
  185.   GOTO display      
  186.   
  187.   x6:
  188.   IF x<>6 THEN x7
  189.   IF y=7 THEN 
  190.     s$=s$+" "
  191.     pc=pc+1
  192.     phon$(pc)=" "
  193.     phmenu(pc)=x
  194.     GOTO display
  195.   END IF  
  196.   IF y>0 THEN 
  197.     s$=s$+punct$(y)
  198.     pc=pc+1
  199.     phon$(pc)=punct$(y)
  200.     phmenu(pc)=x
  201.   END IF  
  202.   GOTO display      
  203.   
  204.   x7:
  205.   IF x<>7 THEN x8
  206.   IF y>0 THEN 
  207.     IF phmenu(pc)=1 OR phmenu(pc)=2 AND pc<>0 THEN
  208.       s$=s$+digit$(y)
  209.       pc=pc+1
  210.       phon$(pc)=digit$(y)
  211.       phmenu(pc)=x
  212.     ELSE
  213.       GOSUB badmove
  214.     END IF
  215.   END IF
  216.   GOTO display      
  217.   
  218.   x8:
  219.   IF x<>8 THEN x9
  220.   IF y>0 THEN
  221.     WINDOW 3,"Speech Characteristics",(150,100)-(500,175),0,2
  222.     PRINT
  223.     PRINT"Current ";voice$(y);" =";v%(y-1)
  224.     PRINT
  225.     PRINT"Enter new value..."
  226.     COLOR 3,0
  227.     PRINT"{range:";loval(y);" to";hival(y);"}"
  228.     getvalue:
  229.       INPUT v%(y-1)
  230.       IF v%(y-1) < loval(y) OR v%(y-1) > hival(y) THEN getvalue
  231.     WINDOW CLOSE 3  
  232.     WINDOW OUTPUT 2
  233.     IF s$="" THEN SAY "OHKEY?",v% ELSE SAY s$,v%
  234.   END IF
  235.   RETURN
  236.  
  237.   x9:
  238.   IF y=1 THEN 
  239.     IF pc<>0 AND s$<>"" THEN 
  240.       SAY s$,v%
  241.     ELSE
  242.       GOSUB badmove
  243.     END IF
  244.   END IF          
  245.   IF y=2 THEN
  246.     WINDOW 3,"Translate text",(1,100)-(640,165),0,2
  247.     COLOR 3,0
  248.     PRINT"Enter ordinary text..." 
  249.     PRINT
  250.     PRINT"> ";
  251.     COLOR 1,0
  252.     INPUT text$
  253.     x$=TRANSLATE$(text$)
  254.     PRINT
  255.     COLOR 2,0
  256.     PRINT x$
  257.     SAY x$,v%
  258.     GOSUB keywait
  259.     WINDOW CLOSE 3
  260.     WINDOW OUTPUT 2
  261.   END IF        
  262.   IF y=3 THEN 
  263.     s$=""
  264.     pc=0                      '...clear string
  265.   END IF  
  266.   IF y=4 AND pc>0 THEN 
  267.     s$=LEFT$(s$,LEN(s$)-LEN(phon$(pc)))  '...delete last
  268.     pc=pc-1
  269.   END IF  
  270.   IF y=5 THEN GOSUB help
  271.   IF y=6 THEN  
  272.        CLS
  273.        MENU CLEAR
  274.        WINDOW CLOSE 2
  275.        SCREEN CLOSE 2      
  276.        STOP
  277.   END IF 
  278.  
  279.   display:
  280.     GOSUB show
  281.  
  282. RETURN  
  283.  
  284.  
  285. show: 
  286.   CLS 
  287.   LOCATE 3,27
  288.   COLOR 2,0
  289.   PRINT "*** Speech Planner ***"
  290.   LOCATE 8,1
  291.   COLOR 4,0
  292.   PRINT "> ";:COLOR 1,0:PRINT s$;:COLOR 5,0:PRINT "|"
  293. RETURN  
  294.  
  295.  
  296. badmove:
  297.  FOR i=1 TO 2
  298.    FOR s=300 TO 500 STEP 30
  299.      SOUND s,1,255,0         '...illegal combination
  300.    NEXT
  301.  NEXT      
  302. RETURN
  303.  
  304.  
  305. help:
  306.   WINDOW 3,"Help",(1,17)-(640,185),0,2            
  307.   PRINT
  308.   PRINT "The Speech Planner allows you to experiment with"
  309.   PRINT "speech string construction in two ways:"
  310.   PRINT
  311.   PRINT "          1. By studying the text translation"
  312.   PRINT "             production of phoneme combinations"
  313.   PRINT "             with the Translate option from the"
  314.   PRINT "             Action menu."
  315.   PRINT
  316.   PRINT "          2. By providing access to all Amiga"
  317.   PRINT "             speech phonemes, symbols and voice"
  318.   PRINT "             parameters via pull-down menus."
  319.   PRINT "             Phoneme menus are in the order"
  320.   PRINT "             shown in appendix H of the Amiga"
  321.   PRINT "             BASIC manual."
  322.   PRINT
  323.   PRINT "See sections 8-129 to 8-132 for more details."
  324.   GOSUB keywait
  325.   CLS
  326.   COLOR 1,0
  327.   PRINT 
  328.   PRINT "Pull-Down Menu abbreviations:"
  329.   PRINT
  330.   PRINT "    V  = Vowels"
  331.   PRINT "    DP = Dipthongs"  
  332.   PRINT "    C1 = Consonants"
  333.   PRINT "    C2 = Consonants"  
  334.   PRINT "    S  = Special Symbols"
  335.   PRINT "    P  = Punctuation" 
  336.   PRINT "    D  = Digits"
  337.   GOSUB keywait
  338.   WINDOW CLOSE 3
  339.   WINDOW OUTPUT 2
  340. RETURN  
  341.   
  342.  
  343. keywait:
  344.   PRINT
  345.   COLOR 3,0
  346.   PRINT"Press any key to continue...";
  347.   WHILE INKEY$=""
  348.   WEND      
  349. RETURN  
  350.